#include "dd_box.h"

#include "util/mmgr.h"		// Needs to come in early

using namespace dd;

Box::Box()
{

}

Box::~Box()
{

}

void Box::Render(DBG_BUFFER* _pBuffer)
{
	// 
	//		  *------ * MAX
	//		 /		 /|
	//		* ----- * |
	//		|		| *
	//		|		|/
	//	MIN	* ----- *

	math::Vec3 DeltaX = math::Vec3(m_Max.x -  m_Min.x, 0, 0);
	math::Vec3 DeltaY = math::Vec3(0, m_Max.y -  m_Min.y, 0);
	math::Vec3 DeltaZ = math::Vec3(0, 0, m_Max.z -  m_Min.z);

	// From MIN
	AddLine(_pBuffer, m_Min,  m_Min+ DeltaX, m_Color);
	AddLine(_pBuffer, m_Min,  m_Min+ DeltaY, m_Color);
	AddLine(_pBuffer, m_Min,  m_Min+ DeltaZ, m_Color);

	// From MIN + Y
	math::Vec3 From = m_Min+DeltaY;
	AddLine(_pBuffer, From,  From+ DeltaX, m_Color);
	AddLine(_pBuffer, From,  From+ DeltaZ, m_Color);

	// From MAX - Y
	From = m_Max-DeltaY;
	AddLine(_pBuffer, From,  From- DeltaX, m_Color);
	AddLine(_pBuffer, From,  From- DeltaZ, m_Color);

	// From MAX
	AddLine(_pBuffer, m_Max,  m_Max- DeltaX, m_Color);
	AddLine(_pBuffer, m_Max,  m_Max- DeltaY, m_Color);
	AddLine(_pBuffer, m_Max,  m_Max- DeltaZ, m_Color);

	// Two missing pillars:
	AddLine(_pBuffer, m_Max-DeltaZ,  m_Min+ DeltaX, m_Color);
	AddLine(_pBuffer, m_Max-DeltaX,  m_Min+ DeltaZ, m_Color);


}

void Box::Setup(const math::Vec3& _Min, const math::Vec3& _Max, COLOR _Color)
{
	m_Color = _Color;
	m_Min	= _Min;
	m_Max	= _Max;
}
